/*
 * Copyright 2016 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.springframework.cloud.stream.app.trigger;

import java.util.Date;
import java.util.concurrent.TimeUnit;

import javax.validation.constraints.AssertFalse;
import javax.validation.constraints.Min;

public interface TriggerProperties {

    long getMaxMessages();

    void setMaxMessages(long maxMessages);

    @Min(0)
    int getInitialDelay();

    void setInitialDelay(int initialDelay);

    TimeUnit getTimeUnit();

    void setTimeUnit(TimeUnit timeUnit);

    int getFixedDelay();

    void setFixedDelay(int fixedDelay);

    String getCron();

    void setCron(String cron);

    Date getDate();

    void setDate(String date);

    String getDateFormat();

    void setDateFormat(String dateFormat);

    @AssertFalse
    boolean isMutuallyExclusive();
}
